package besteAukera;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Stroke;
import java.util.Vector;

public class Kablea extends AteLogikoak {
	private Color kolorea;
	private Vector<Hanka> hankaBektorea = new Vector<Hanka>();
	private Vector<Hanka> sarreraBektorea = new Vector<Hanka>();
	private Hanka s1, i1;
	// private SarreraDatu sd1;
	// private SarreraDatu sarDat=null;
	private int xZBuk = x + 20, yZBuk = y, xZHas = x + 20, yZHas = y;

	public Kablea(int x1, int y1, int hankaKop, int sarKop, int r1, int r2,
			int g1, int g2, String motaFis) {
		super(x1, y1, hankaKop, sarKop, r1, r2, g1, g2, motaFis);
		// TODO Auto-generated constructor stub
		if (motaFisikoa.compareTo("and") == 0) {
			s1 = new Hanka(x, y, "positiboa", "s", 0, this, "h");
			// i1 = new Hanka(x+40, y , "positiboa", "i", 1, this, "h");
			i1 = new Hanka(xZBuk + 20, yZBuk, "positiboa", "i", 1, this, "h");
		}
		// else if (motaFisikoa.compareTo("nor") == 0) {
		// s1 = new Hanka(x, y + 12, "negatiboa", "s", 0, this, "h");
		// i1 = new Hanka(x + 75, y + 24, "positiboa", "i", 1, this, "h");
		// }
		lotList[0] = s1;
		lotList[1] = i1;

	}

	public void dibujate(Graphics g) {

		g.setColor(Color.black);
		// g.drawLine( x+20,y,xZBuk,yZBuk);
		g.drawLine(xZHas, yZHas, xZBuk, yZBuk);
		s1.dibujate(g);
		i1.dibujate(g);

	}

	public boolean estaDentro(int x, int y) {
		if ((yZBuk >= yZHas) && (xZBuk >= xZHas))
			if ((x > xZHas) && (x < xZBuk) && (y > yZHas - 5)
					&& (y < (yZBuk + 5))) {
				return true;
			}
		if ((yZBuk < yZHas) && (xZBuk >= xZHas))
			if ((x > xZHas + 5) && (x < xZBuk) && (y > yZBuk - 5)
					&& (y < (yZHas + 5))) {
				return true;
			}
		if ((yZBuk >= yZHas) && (xZBuk < xZHas))
			if ((x > xZBuk) && (x < xZHas) && (y > yZHas - 5)
					&& (y < yZBuk+5)) {
				return true;
			}
		if ((yZBuk < yZHas) && (xZBuk < xZHas))
			if ((x > xZBuk) && (x < xZHas) && (y > yZBuk)
					&& (y < (yZHas))) {
				return true;
			}
		return false;
	}

	/**
	 * And irudiaren laukizuzenaren goi-ezkerreko erpina finkatzen du.
	 * 
	 * @param x:
	 *            X ardatzaren posizioa finkatzen du.
	 * @param y:
	 *            Y ardatzaren posizioa finkatzen du.
	 */
	public void setPosicion(int x1, int y1) {
		int xDesp = x1 - x;
		int yDesp = y1 - y;
		x = x1;
		y = y1;
		xZHas = xZHas + xDesp;
		yZHas = yZHas + yDesp;
		System.out.println("Xren desplazamendua: " + xDesp
				+ "Yren desplazamendua: " + yDesp);
		xZBuk = xZBuk + xDesp;
		yZBuk = yZBuk + yDesp;

	}

	public int getX() {
		return x;
	}

	/**
	 * Devuelve la y de la esquina superior izquierda del rectangulo
	 * 
	 * @return y de la esquina superior izquierda del rectangulo
	 */
	public int getY() {
		return y;
	}

	@Override
	public void funtzioLogikoa(Integer... values) {

		// TODO Auto-generated method stub

		lotList[1].getIrteera().setBalioa(lotList[0].getSarrera().getBalioa());
	}

	@Override
	public Vector<Hanka> getHankak() {
		// TODO Auto-generated method stub
		hankaBektorea = new Vector<Hanka>();
		hankaBektorea.addElement(s1);
		hankaBektorea.addElement(i1);
		return hankaBektorea;
	}

	@Override
	public Vector<Hanka> getSarreraHankak() {
		sarreraBektorea = new Vector<Hanka>();
		sarreraBektorea.addElement(s1);
		sarreraBektorea.addElement(i1);
		return sarreraBektorea;
	}

	public Integer getData1() {
		return data1;
	}

	public Integer getData2() {
		return data2;
	}

	public void setEmaitza(Integer em) {
		emaitza = em;

	}

	public Hanka getIrteeraHanka() {
		return i1;
	}

	// public void sarreraEzabatu(SarreraDatu sd,Graphics g){
	// sd.loturaEzabatu();
	// //irudia ezabatu
	// sd.ezabatu(g);
	// }

	// public void borratuHanka(Hanka h){
	// int izen=h.getIzena();
	// for (Hanka hank:hankaBektorea){
	// if (hank.getIzena()==izen){
	// hankaBektorea.remove(hank);
	// h = new Hanka(x + 15, y + rad2 / 4, "positiboa", "s", izen);
	// hankaBektorea.addElement(h);
	// }
	// }
	// }

	public synchronized void abixatu() {
		int i = 0;
		// Nota:Probatu abixatu eta exekutatu And-ean egiten, horrela txip
		// bakoitza
		// berea izango du eta chip-ean hankak sortzen direnez ez da problemarik
		// egon behar
		while (lotList.length > i) {
			int j = 0;

			if (lotList[i] != null)
				if (lotList[i].getHankaMota() != "s")

					while (lotList[i].getLotLista().size() > j) {

						// irteera truen jarri
						Chip unekoChip = this.lotList[i].getLotLista().get(j)
								.getChipa();
						// abixatu behar den txipa unekochipean gorde
						int unekoHanka = lotList[i].getLotLista().get(j)
								.getHankaZenb();
						if ((unekoChip.getLoturenLista()[unekoHanka]
								.getloturaDu() == true))
							unekoChip.lotList[unekoHanka]
									.getSarrera()
									.setBalioa(
											lotList[1].getIrteera().getBalioa());
						unekoChip.aktibatu(unekoHanka);
						// Hau aldatu beharko da, bakarrik ate logikoentzako
						// balio baitu
						j++;
					}
			i++;

		}
		notifyAll();
	}

	public void luzatuXKablea(int irtX, int irtY, int XZ, int YZ, Hanka h,
			Hanka h2) {
		// TODO Auto-generated method stub

		if (h.getHankaMota() == "i") {
			h.setPosicion(irtX, irtY);
			xZBuk = irtX - 20;
			yZBuk = irtY;
		}
		if (h.getHankaMota() == "s") {
			h.setPosicion(irtX, irtY);
			xZHas = irtX + 20;
			yZHas = irtY;
		}
	}

}
